#!/usr/local/bin/python3
# -*- coding: UTF-8 -*-
"""
@author:apple
@file:func_demo01.py
@time:2021/07/06
"""

"""
二. 形参
    方法的定义处即为方法的形参
    1.位置参数
        fun01(1,2)
    2.关键字参数
        fun01(name='zhang',age=23)
    位置参数与关键字参数的混合使用，位置参数必须在关键字参数前面
    
    3. *iterable
      对可迭代对象进行迭代，取出里面对每一个值作为位置参数传递到函数中
      
    4. **dict
      迭代字典，把字典的key=value 作为函数的关键字参数传递到函数中
"""


def fun01(name, age):
    ...
    print(f'name = {name},age = {age}')

# 1. 位置参数
fun01("zhangsan",21)
# 2. 关键字参数
fun01(name='zhang',age=23)
# 3. 位置参数与关键字参数的混合使用
fun01('lisi',age=78)
# fun01(age='21','111')

"""
一. 实参
    方法的调用处传递的参数即为实参
    1.必须传递的参数
    
    2.默认参数
    注意: 比传递参数必须在默认参数之前
    
    3. *args
     位置参数溢出的参数，python编译器把多余的参数使用一个元组存起来，使用 args变量指向这个元组
    
    4. **kwargs
     关键字参数溢出的参数，使用一个字典保存这些溢出的参数，使用kwargs指向这个字典
"""

# name 为必传递参数
# age 为 默认参数
def fun02(name,age=21):
    ...


def fun03(*args,**kwargs):
    ...
    print(args)
    print(kwargs)



name = ['zhangsan','lisi']
person = {'name':'lisi','age':21}

fun03('opt',*name,**person)

if __name__ == '__main__':
    pass
